/*
 * Teknei 2014 - All rights reserved
 */
package com.teknei.acabus.example.facade;

import java.util.List;

import javax.ejb.Local;

import com.teknei.acabus.FacadeException;
import com.teknei.acabus.core.entities.TableA;
import com.teknei.acabus.core.entities.TableB;
import com.teknei.acabus.dto.TableCDTO;

/**
 * Interface for Facade operations on Table elements
 * @author Jorge Amaro
 * @version 1.0
 * @since 1.0
 *
 */
@Local
public interface TableFacade {

	/**
	 * Finds the TableA elements
	 * @return the list of elements
	 * @throws FacadeException
	 */
	List<TableA> findAllTableA() throws FacadeException;

	/**
	 * Updates a TableA instance
	 * @param tablea
	 * @throws FacadeException
	 */
	void updateTableA(TableA tablea) throws FacadeException;

	/**
	 * Saves a TableA instance
	 * @param tablea
	 * @return the id of the record
	 * @throws FacadeException
	 */
	int saveTableA(TableA tablea) throws FacadeException;

	/**
	 * Deletes a TableA instance
	 * @param tablea the instance
	 * @throws FacadeException
	 */
	void deleteTableA(TableA tablea) throws FacadeException;

	/**
	 * Finds all the TableB elements
	 * @return the list
	 * @throws FacadeException
	 */
	List<TableB> findAllTableB() throws FacadeException;

	/**
	 * Saves the TableB instance
	 * @param tableb
	 * @return the id of the record
	 * @throws FacadeException
	 */
	int saveTableB(TableB tableb) throws FacadeException;

	/**
	 * Deletes a TableB instance
	 * @param tableb the instance
	 * @throws FacadeException
	 */
	void deleteTableB(TableB tableb) throws FacadeException;

	/**
	 * Updates a TableB instance
	 * @param tableb the instance
	 * @throws FacadeException
	 */
	void updateTableB(TableB tableb) throws FacadeException;

	/**
	 * Finds all TableC elements
	 * @return the list
	 * @throws FacadeException
	 */
	List<TableCDTO> findAllTableCDTO() throws FacadeException;

	/**
	 * Updates a TableC instance
	 * @param tablec the instance
	 * @throws FacadeException
	 */
	void updateTableC(TableCDTO tablec) throws FacadeException;

	/**
	 * Saves a TableC instance
	 * @param tablec the instance
	 * @return the id of the record
	 * @throws FacadeException
	 */
	int saveTableC(TableCDTO tablec) throws FacadeException;

	/**
	 * Deletes a TableC instance
	 * @param tablec the instance
	 * @throws FacadeException
	 */
	void deleteTableC(TableCDTO tablec) throws FacadeException;


}
